package modele;

import java.io.Serializable;

public abstract class Amelioration implements Serializable{
	private static final long serialVersionUID = -8977779685268644721L;
	protected int coutElixir;
	protected int niveau;
	
	public Amelioration()
	{
		niveau = 1;
	}
	
	/**
	 * détermine si le niveau d'une amélioration est possible
	 * @param joueur joueur voulant augmenter le niveau de son amélioration
	 * @return true si le niveau est augmentable, false sinon
	 */
	public boolean niveauAugmentable(Joueur joueur)
	{
		if(coutElixir <= joueur.getRessourceElixir())
			return true;
		else
			return false;
	}
	
	
	/**
	 * augmente le niveau d'une amélioration si le joueur peut la payer
	 * sinon la fonction ne fait rien
	 * @param joueur joueur voulant augmenter sa technologie
	 */
	public void augmenterNiveau(Joueur joueur)
	{
		if(niveauAugmentable(joueur))
		{
			augmenterNiveauSpecifique(joueur);
			niveau++;
			//paiement
			joueur.setRessourceElixir(joueur.getRessourceElixir()-coutElixir);
			coutElixir = 2*coutElixir;
		}
	}
	
	/**
	 * permet à chaque sous-classe d'Amelioration d'implanter son amélioration
	 * @param joueur joueur voulant augmenter le niveau de son amélioration
	 */
	public abstract void augmenterNiveauSpecifique(Joueur joueur);
}
